package lajihuishou.general;
/**
 * 
 * @author Jin Jing
 * 
 * 那些不再被引用的对象称为垃圾。
 * 
 * 空间是否被回收是由垃圾回收器自行决定的，通常只在回收器为了避免内存耗尽或目前可用的空间
 * 不够分配时，才回收内存垃圾。
 * 
 * “标记－清楚模型”
 * 先找到直接可达的对象，作为根对象集合，然后迭代扫描可达对象所包含的对象引用，
 * 直到没有可达对象尚未标记为止。
 * 
 * 在扫描过程运行时需要冻结用户代码的执行，否则标记可能出问题
 * 
 * 可以为一个类实现finalize方法，将在对象空间回收之前被调用（异步调用的）
 * protected void finalize() throws Throwable
 * 该方法在每个对象上至多被调用一次，尽管方法的执行将导致对象重新可达，而随后再度不可达。
 * 该方法声明可以抛出任何异常，但抛出的异常将被垃圾回收忽略。
 * 虚拟机并不保证哪个线程来执行finalize方法，但它会保证执行该方法的线程不会持有任何用户可见的同步锁。
 * 
 * 当写finalize方法是要小心，一旦引用的对象也是垃圾对象，会导致处于不确定状态。
 * 
 * 同时要会用super.finalize，否则可能对象中自己那部分被正确地终结，而父类那一部分没能被终结。
 * 
 * 垃圾回收器收集无用对象的顺序并不固定
 * 
 * 还可以在finalize中让对象发货，但这样并不好
 *
 */
public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
